package es.onlysolutions.gs.comm.utils;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import sun.misc.BASE64Encoder;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * Utilidades para chequeo de passwords.
 */
public class PasswordUtils
{

    /**
     * Logger para esta clase.
     */
    private static final Log logger = LogFactory.getLog(PasswordUtils.class);

    /**
     * String inicial para la encriptacion.
     */
    private static final String SEMILLA = "b0l*";

    /**
     * Algoritmo para la encriptacion.
     */
    private static final String ALGORITMO = "SHA";

    /**
     * Metodo que devuelve la encriptacion del string pasado como argumento.
     * @param password a encriptar.
     * @return String con la password encriptada.
     */
    public static String encryptPassword(String password)
    {
        String resultado;
        byte[] encriptada;

        try
        {
            MessageDigest md = MessageDigest.getInstance(ALGORITMO);
            encriptada = md.digest((SEMILLA + password).getBytes());
            resultado = new BASE64Encoder().encode(encriptada);
        }
        catch (NoSuchAlgorithmException e)
        {
            logger.error("Encrypt exception. Algorythm not exist: " + ALGORITMO);
            throw new IllegalArgumentException("Encrypt exception. Algorythm not exist: " + ALGORITMO);
        }
        return resultado;
    }
}
